package com.shiyanlou.upms.common.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 * Swagger 配置文件
 */
@Configuration
//启动Swagger
@EnableSwagger2
public class SwaggerConfig {

    @Bean
    //创建一个 Swagger2 的 Docket 实例，并配置了 API 文档的基本信息和要生成文档的 API 包路径
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)  //使用 Docket 类创建一个新的 Swagger 文档实例，设置文档类型为 DocumentationType.SWAGGER_2。
                .apiInfo(apiInfo())     //调用 apiInfo() 方法设置 API 文档的基本信息，包括标题、描述、版本等。
                .select()   //调用 select() 方法开始定义 API 的选择器。
                //调用 apis(RequestHandlerSelectors.basePackage("com.shiyanlou.upms.system.controller")) 方法指定需要生成文档的 API 所在的包路径。
                .apis(RequestHandlerSelectors.basePackage("com.shiyanlou.upms.system.controller"))
                .paths(PathSelectors.any()) //调用 paths(PathSelectors.any()) 方法指定所有的 API 路径都需要生成文档。
                .build();   //调用 build() 方法构建 Docket 实例
    }

    public ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                // 标题
                .title("管理系统API接口文档")
                // 作者信息
                .contact(new Contact("jie_ming514", "https://blog.csdn.net/m1090760001", "jie_ming514@163.com"))
                // 描述
                .description("管理系统API接口文档")
                // 版本
                .version("1.0.0")
                .build();
    }
}